home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
program
/
331
/
gemfsc14
/
aesfast.sh
next >
Wrap
Text File
|
1990-07-20
|
6KB
|
121 lines
;*========================================================================
;*
;* AESFAST Public Domain AES bindings.
;*
;* Maintenance:
;* 02/10/89 v1.10 - Added more labels to items within global array.
;*========================================================================
;*************************************************************************
;*
;* Header file for AESFAST source code modules. Offsets (structures)
;* and macros can be found here. (Hey! just like a C header...)
;*
;* Also, if the symbol AES_ALLOCBSS is defined, we will actually
;* allocate storage in the BSS section for the AES control blocks, if
;* the symbol is not defined, we just define the offsets but no storage.
;*
;*************************************************************************
.globl aesblock ; Everybody (potentially at least)
.globl aes_call ; uses these things, so we might
.globl aes_do ; as well define them here.
FALSE = 0 ; Mundane
TRUE = 1 ; stuff.
RET2USER = 0 ; These are flags used by the ACall macro to
RET2HERE = 1 ; decide between calling aes_call or aes_do.
;-------------------------------------------------------------------------
; ACall macro. Call the AES. Depending on the value of the 'type' flag,
; we generate a 'jsr aes_call' or a 'jmp aes_do'.
;-------------------------------------------------------------------------
.macro ACall type
.if \type
jsr aes_call
.else
jmp aes_do
.endif
.endm
;-------------------------------------------------------------------------
; AControl macro. Load register d0 with the control array (byte) values.
; By getting all the control values into a single register (except the
; 'addrout' count, which is always zero) we can load the entire control
; array with a single 'movep.l' instruction in aes_call.
;-------------------------------------------------------------------------
.macro AControl fun,ini,adi,ino
move.l #( (\fun << 24) | (\ini << 16) | (\adi << 8) | \ino ),d0
.endm
;-------------------------------------------------------------------------
; Define the offsets within the AES block storage area.
;-------------------------------------------------------------------------
.abs ; Offsets from 'aesblock'...
aespb = * ; 'aespb' MUST be first!...
pcontrl: ds.l 1 ; Pointer to control array
pglobal: ds.l 1 ; Pointer to global array
pintin: ds.l 1 ; Pointer to intin array
pintout: ds.l 1 ; Pointer to intout array
padrin: ds.l 1 ; Pointer to adrin array
padrout: ds.l 1 ; Pointer to adrout array
control = * ; Control array is next...
function: ds.w 1 ; Function code
sintin: ds.w 1 ; size of intin
sintout: ds.w 1 ; size of intout
sadrin: ds.w 1 ; size of adrin
sadrout: ds.w 1 ; size of adrout
global: ds.w 15 ; Global array, needs no further def.
SZ_AESBLK = * ; Size of the aesblock storage.
;-------------------------------------------------------------------------
; If we are supposed to be allocating the BSS storage (eg, if we are
; being included from AESCOMN), export the global labels and define
; the necessary BSS storage.
;
; |1.1: Fully defined the global storage block and exported the labels
; for all of it. Names were made up using 'gl_apid' as the example.
; This change is primarily to support TOS 1.4, in which the AES
; version becomes an important issue.
;-------------------------------------------------------------------------
.globl _gl_apid ; Export this label for C programs.
.globl _global ; Export this label for C programs.
.globl _aespb ; Export this label for C programs.
.globl _aescontrol ; |v1.1: added
.globl _gl_apversion ; |v1.1: added
.globl _gl_apcount ; |v1.1: added
.globl _gl_apid ; |v1.1: added
.globl _gl_apprivate ; |v1.1: added
.globl _gl_apptree ; |v1.1: added
.globl _gl_ap1resv ; |v1.1: added
.if ^^defined AES_ALLOCBSS
.bss
aesblock: ; Integrated AES data block storage.
_aespb: ds.l 6 ; Room for aespb array.
_aescontrol: ds.w 5 ; Room for control array.
_global: ; Global array...
_gl_apversion: ds.w 1 ; AES version.
_gl_apcount: ds.w 1 ; AES max appl count.
_gl_apid: ds.w 1 ; Application id.
_gl_apprivate: ds.l 1 ; Application-specific data.
_gl_apptree: ds.l 1 ; Pointer to head of RSC tree.
_gl_ap1resv: ;|v1.4: (Old name retained)
_gl_apprshdr: ds.l 1 ;|v1.4: Pointer to rshdr struct.
_gl_ap2resv: ds.l 3 ; Rest of the global array.
.endif ; ^^defined AES_ALLOCBSS
.text ; Leave BSS mode...
; end of code